package cn.lls.req.emp;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.sql.Date;

/**
 * 员工信息实体类
 *
 * @ClassName EmployeeInfoReq
 * @Author 划水艺术家
 * @Date 2022/11/21 23:16
 * @Version 1.0
 **/
@Data
@ApiModel("员工信息实体类")
public class EmployeeInfoReq implements Serializable {

    private static final Long serialVersionUID = 1L;

    /**
     * 用户主键，自增
     */
    @ApiModelProperty("用户主键")
    private Long userId;

    /**
     * 公司的Id，外键
     */
    @ApiModelProperty("公司的Id，外键")
    @NotNull(message = "必须指定公司Id")
    private Long companyId;

    /**
     * 部门的Id，外键
     */
    @ApiModelProperty("部门的Id，外键")
    @NotNull(message = "必须指定部门Id")
    private Long departmentId;

    /**
     * 角色Id
     */
    @ApiModelProperty("角色Id")
    @NotNull(message = "必须指定角色Id")
    private Long roleId;

    /**
     * 员工姓名
     */
    @ApiModelProperty("员工姓名")
    @NotNull(message = "必须指定员工姓名")
    private String employeeName;

    /**
     * 员工性别 0 女 1 男
     */
    @ApiModelProperty("员工性别 0女 1男")
    @NotNull(message = "必须指定员工性别")
    @Range(min = 0, max = 1, message = "员工性别 0女 1男")
    private Integer employeeGender;

    /**
     * 员工图片地址，全地址
     */
    @ApiModelProperty("员工图片地址，全地址")
    @NotEmpty(message = "必须指定员工图片路径")
    private String employeeImage;

    /**
     * 员工身份证照片正反面地址，全地址
     */
    @ApiModelProperty("员工身份证照片正反面地址")
    @NotNull(message = "必须指定员工身份证图片地址")
    private String employeeIdCard;

    /**
     * 员工联系电话
     */
    @ApiModelProperty("员工联系电话")
    @NotNull(message = "必须指定员工联系电话")
    private String employeeTel;

    /**
     * 员工联系邮箱
     */
    @ApiModelProperty("员工联系电话")
    @Email(message = "邮箱格式不正确")
    private String employeeEmail;

    /**
     * 员工学历
     */
    @ApiModelProperty("员工学历")
    private String employeeDegree;

    /**
     * 员工民族
     */
    @ApiModelProperty("员工民族")
    private String employeeEthnic;

    /**
     * 员工是否结婚 0：否 1：是
     */
    @ApiModelProperty("员工是否结婚 0：否 1：是")
    @Range(min = 0, max = 1, message = "员工是否结婚 0：否 1：是")
    private Integer employeeMarital;

    /**
     * 员工入职日期
     */
    @ApiModelProperty("员工入职日期")
//    @Past(message = "入职日期校验不通过，必须是一个过去的日期")
    @NotNull(message = "未指定入职日期")
    private Date joinDate ;

    /**
     * 员工出生日期
     */
    @ApiModelProperty("员工出生日期")
    @NotNull(message = "未指定出生日期")
//    @Past(message = "出生日期校验不通过，必须是一个过去的日期")
    private Date birthDate ;

}
